<template>
    <div class="song">
        <div class="m-info" v-show="id != undefined && songdetail.length != 0">
            <div class="btns">
                <a class="play" title="播放" @click="playAllMusic">
                    <i class="ply"></i>
                    <span>播放</span>
                </a>
                <a class="add" @click="addAllSongsMusicList"></a>
            </div>
        </div>
        <!-- 歌曲列表 -->
        <div class="songlist" v-show="id != undefined && songdetail.length != 0">
            <div class="song">
                <div class="header">
                    <li class="w1"></li>
                    <li class="w2">歌曲标题</li>
                    <li class="w3">时长</li>
                    <li class="w5">专辑</li>
                </div>
                <div class="mainer">
                    <ul v-for="(song, index) in songdetail" :key="index">
                        <li class="m1 over underline" >
                            <span>{{ index + 1 }}</span>
                            <i class="play"  @click="setMusic(song.id)" :class="{active:song.id==musicNow.id}"></i>
                        </li>
                        <li class="m2 over underline" :title="song.name">
                            <router-link :to="{ path: '/song', query: { id: `${song.id}` } }">
                                <span class="underline">{{ song.name }}</span>
                                <span v-if="song.alia" style="margin-left: 6px; color: #999" >-{{ song.alia }}</span>
                            </router-link>
                            <i class="mv"></i>
                        </li>
                        <li class="m3 over underline">
                            <span class="time">{{ min(song) }}:{{ sec(song) }}</span>
                            <div class="show">
                                <a title="添加到播放列表" class="a1"  @click="addMusicList(song.id)"></a>
                                <a title="收藏" class="a2" @click="collectSong(song.id)"></a>
                                <a title="下载" class="a4"></a>
                            </div>
                        </li>
                        <li class="m5 over underline" :title="song.al.name">
                            <router-link :to="{path:'/album',query:{id:`${song.al.id}`}}" style="color:#666;">
                                <span>{{ song.al.name }}</span>
                            </router-link>

                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        name: "song",
        data() {
            return {
                songdetail:[],
            }
        },
        computed:{
            id(){
                return this.$route.query.id;
            },
            isLogin() {
                return this.$store.state.login.isLogin;
            },
            musicNow(){
                return this.$store.state.music.music;
            }
        },
        methods:{
            playAllMusic(){
                let arr = [];
                if (this.songdetail.length>0){
                    this.songdetail.forEach((item,index,array)=>{
                        arr.push(item.id);
                    });
                    this.$store.dispatch('addMusicList',arr);
                    this.$store.dispatch('setMusics',arr[0]);
                    setTimeout(() => {
                        this.$bus.$emit('play');
                    }, 500);
                }
            },
            addAllSongsMusicList(){
                let arr = [];
                if (this.songdetail.length>0){
                    this.songdetail.forEach((item,index,array)=>{
                        arr.push(item.id);
                    });
                    this.$store.dispatch('addMusicList',arr);
                }
            },
            //收藏歌曲
            async collectSong(id){
                if (!this.isLogin){
                    this.$message('请登录，便可收藏歌曲！');
                    return ;
                }else {
                    let obj = await this.$API.iscollectSong(localStorage.getItem('USERID'),id);
                    //判断是否已经收藏
                    if (obj.result.isCollect){
                        this.$notify({
                            type: "warning",
                            message: "这个曲目已经被你收藏了，不可重复收藏",
                        });
                        return ;
                    }else {
                        this.$API.reqCollectSong(1,localStorage.getItem('USERID'),id).then(res =>{
                            if (res.code==200){
                                this.$notify({
                                    type: "success",
                                    message: "收藏成功",
                                });
                            }
                        }).catch(error => this.$message.error("操作失败,请重试!"));

                    }
                }
            },
            // 获取歌手单曲
            async getArtist(){
                let obj = await this.$API.reqArtist(this.id);
                this.songdetail=  obj.result.hotSongs;
            },
            // 添加音乐至播放列表
            addMusicList(ids){
                this.$store.dispatch('addMusicList',ids);
            },
            // 设置当前播放的音乐
            setMusic(id){
                this.$store.dispatch('setMusics',id);
                this.$store.dispatch('addMusicList',id);
                setTimeout(() => {
                    this.$bus.$emit('play');
                }, 500);
            },
            min(song){
                if(parseInt(song.dt/60000) < 10)
                    return '0'+parseInt(song.dt/60000);
                else return parseInt(song.dt/60000)
            },
            sec(song){
                let x = parseInt(song.dt/60000);
                let y = parseInt(song.dt/1000-x*60);
                if(y < 10) return '0'+y;
                else return y;
            },
        },
        mounted(){
            this.getArtist();
        }
    };
</script>

<style scoped lang="less">
    .song {
        width: 640px;
        .m-info {
            margin: 20px 0 10px 0;
            height: 31px;

            .btns {
                height: 31px;
                display: flex;
                .play {
                    width: 66px;
                    padding-left: 5px;
                    background: url("../../images/button2.png") no-repeat 0 -1652px;
                    text-align: center;
                    line-height: 31px;
                    height: 31px;
                    border-top-left-radius: 5px;
                    border-bottom-left-radius: 5px;
                    i {
                        width: 20px;
                        height: 18px;
                        margin: 6px 2px 2px 0;
                        float: left;
                        background: url("../../images/button2.png") no-repeat 0 -1622px;
                    }

                    span {
                        color: #fff;
                    }
                    &:hover {
                        cursor: pointer;
                    }
                }
                .add {
                    width: 31px;
                    height: 31px;
                    margin-right: 5px;
                    background: url("../../images/button2.png") no-repeat 0 -1588px;
                    &:hover {
                        cursor: pointer;
                        background-position: -40px -1588px;
                    }
                    &:active {
                        background-position: -80px -1588px;
                    }
                }
                .dis {
                    // width: 92.6px;
                    // padding-right: 5px;
                    margin-right: 6px;
                    height: 100%;
                    background: url("../../images/button2.png") no-repeat;
                    background-position: 0px -1063px;
                    span {
                        padding-right: 10px;
                        display: inline-block;
                        height: 100%;
                        width: 100%;
                        background: url("../../images/button2.png") no-repeat right -1106px;
                        line-height: 30px;
                        padding-left: 30px;
                    }
                    &:hover {
                        color: #666;
                        cursor: pointer;
                    }
                }
            }
        }
        .songlist {
            width: 100%;
            min-height: 400px;
            .tlt {
                width: 100%;
                padding-left: 40px;
                padding-right: 20px;
                height: 35px;
                border-bottom: 2px solid #c20c0c;

                h3 {
                    font-family: "Microsoft Yahei", Arial, Helvetica, sans-serif;
                    font-size: 20px;
                    line-height: 28px;
                    font-weight: normal;
                    color: #333;
                    float: left;
                }

                .sub {
                    margin: 9px 0 0 20px;
                    float: left;
                    color: #666;
                    font-size: 12px;
                    font-family: Arial, Helvetica, sans-serif;
                    -webkit-text-size-adjust: none;
                }

                .more {
                    margin-top: 5px;
                    height: 16px;
                    float: right;

                    .fc {
                        color: #c20c0c;
                        font-weight: bold;
                    }
                }
            }
            .song {
                width: 100%;
                border: 1px solid #d9d9d9;
                .header {
                    width: 100%;
                    height: 39px;
                    display: flex;
                    padding: 0;
                    li {
                        border-right: 1px solid #d9d9d9;
                        padding: 8px 10px;
                        background-image: linear-gradient(
                                rgb(255, 255, 255),
                                rgb(240, 240, 240)
                        );
                        box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1);
                    }
                    .w1 {
                        width: 94px;
                    }
                    .w2 {
                        width: 309px;
                    }
                    .w3 {
                        width: 89px;
                    }
                    .w5 {
                        width: 148px;
                    }
                }

                .mainer {
                    width: 100%;
                    display: block;
                    ul:nth-of-type(odd) {
                        background: #f7f7f7;
                    }
                    .good {
                        height: 70px;
                        span,
                        a,
                        i {
                            display: block;
                            margin-top: 20px !important;
                        }
                    }
                    ul {
                        height: 30px;
                        width: 100%;
                        display: flex;

                        &:hover .time {
                            display: none !important;
                        }
                        &:hover .show {
                            display: block !important;
                        }

                        li {
                            padding: 6px 10px;
                        }

                        .m1 {
                            width: 94px;
                            // height: 100%;
                            padding: 6px 10px;
                            line-height: 18px;

                            span {
                                float: left;
                                width: 25px;
                                height: 18px;
                                color: #999;
                                text-align: center;
                            }
                            .play {
                                float: right;
                                display: block;
                                width: 17px;
                                height: 17px;
                                background: url("../../images/table.png") no-repeat -0px -103px;

                                &:hover {
                                    background-position: -0px -128px;
                                    cursor: pointer;
                                }
                                // background: url("../../images/table.png") no-repeat -20px -128px;
                            }
                            .active{
                                background-position: -20px -128px;
                                &:hover{
                                    background-position: -20px -128px;
                                }
                            }
                        }

                        .m2 {
                            width: 309px;
                            a {
                                width: 280px;
                                color: #333;
                                overflow: hidden;
                                text-overflow: ellipsis;
                                white-space: nowrap;
                                float: left;
                            }
                        }

                        .m3 {
                            width: 89px;
                            .time {
                                display: block;
                            }
                            .show {
                                width: 79px;
                                height: 18px;
                                display: none;
                                a {
                                    margin: 2px 0 0 4px;
                                    width: 18px;
                                    height: 16px;
                                    display: block;
                                    float: left;
                                    background: url("../../images/table.png") no-repeat;
                                    &:hover {
                                        cursor: pointer;
                                    }
                                }
                                .a1 {
                                    width: 13px;
                                    height: 13px;
                                    margin-top: 2px;
                                    margin-left: 0;
                                    background: url("../../images/icon.png") no-repeat;
                                    background-position: 0 -700px;

                                    &:hover {
                                        background-position: -22px -700px;
                                    }
                                }

                                .a2 {
                                    background-position: 0 -174px;
                                    &:hover {
                                        background-position: -20px -174px;
                                    }
                                }
                                .a3 {
                                    background-position: 0 -195px;
                                    &:hover {
                                        background-position: -20px -195px;
                                    }
                                }
                                .a4 {
                                    background-position: -81px -174px;
                                    &:hover {
                                        background-position: -104px -174px;
                                    }
                                }
                            }
                        }
                        .m5 {
                            width: 148px;
                            color: #333;
                        }
                    }
                }
            }
        }
    }
</style>